/**
 * @file file_utils_glib.h
 * @brief 基于GLib的文件读写工具函数
 * @details 提供统一的文件读写接口，使用GLib库实现跨平台兼容
 */

#ifndef FILE_UTILS_GLIB_H
#define FILE_UTILS_GLIB_H

#include <glib.h>
#include <string>

#ifdef __cplusplus
extern "C" {
#endif

/**
 * @brief 使用GLib从文件读取文本内容
 * @param file_path 文件路径（UTF-8编码）
 * @return 文件内容字符串，如果失败返回空字符串
 * @note 自动处理编码转换，确保返回UTF-8编码的字符串
 */
std::string glib_read_text_file(const gchar* file_path);

/**
 * @brief 使用GLib写入文本内容到文件
 * @param file_path 文件路径（UTF-8编码）
 * @param content 要写入的文本内容（UTF-8编码）
 * @return 成功返回TRUE，失败返回FALSE
 * @note 自动创建目录（如果不存在），确保文件以UTF-8编码保存
 */
gboolean glib_write_text_file(const gchar* file_path, const gchar* content);

/**
 * @brief 检查文件是否存在
 * @param file_path 文件路径（UTF-8编码）
 * @return 文件存在返回TRUE，否则返回FALSE
 */
gboolean glib_file_exists(const gchar* file_path);

/**
 * @brief 获取文件大小
 * @param file_path 文件路径（UTF-8编码）
 * @return 文件大小（字节），失败返回-1
 */
gint64 glib_get_file_size(const gchar* file_path);

/**
 * @brief 创建目录（递归创建父目录）
 * @param dir_path 目录路径（UTF-8编码）
 * @return 成功返回TRUE，失败返回FALSE
 */
gboolean glib_mkdir_with_parents(const gchar* dir_path);

/**
 * @brief 获取歌词文件路径（使用GLib路径处理）
 * @param track_uri 音频文件路径（UTF-8编码）
 * @param suffix 文件后缀（如".lrc"）
 * @return 歌词文件路径（UTF-8编码），需要调用g_free释放
 */
gchar* glib_get_lrc_path(const gchar* track_uri, const gchar* suffix);

/**
 * @brief 从音频文件旁边获取歌词文件（使用GLib实现）
 * @param track_location 音频文件路径（UTF-8编码）
 * @param lyrics_out 输出参数：歌词内容
 * @param is_sync_out 输出参数：是否为同步歌词
 * @return 成功返回TRUE，失败返回FALSE
 */
gboolean glib_get_lyrics_next_to_file(const gchar* track_location, 
                                     gchar** lyrics_out, 
                                     gboolean* is_sync_out);

#ifdef __cplusplus
}
#endif

#endif // FILE_UTILS_GLIB_H
